From 9047a5dc52fa31dec2dc8adcb73128ed82333385 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Mon, 6 Mar 2017 18:41:12 +0100 Subject: [PATCH] entry: make sure priv->current_pos is valid We can e.g. get the entry dispose()d and a focus_out event after that (because the toplevel unsets the focus which previously was the entry). We then later use priv->current_pos in a call to pango API which makes sure the given index is valid for the given layout. Since we lazily create a GtkEntryBuffer in get_buffer() and a PangoLayout lazily in gtk_entry_create_layout, these 2 are always valid but don't match priv->current_pos in this situation. Fix this by resetting priv->current-pos in dispose(). --- gtk/gtkentry.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c index 261e97f289..dded3b8f0e 100644 --- a/gtk/gtkentry.c +++ b/gtk/gtkentry.c @@ -2664,6 +2664,8 @@ gtk_entry_dispose (GObject *object) gtk_entry_set_icon_tooltip_markup (entry, GTK_ENTRY_ICON_SECONDARY, NULL); gtk_entry_set_completion (entry, NULL); + priv->current_pos = 0; + if (priv->buffer) { buffer_disconnect_signals (entry); -- 2.30.2